//
//  FXLicenceManager.h
//  iosrdk
//
//  Created by mac on 2022/11/11.
//  Copyright © 2022 foxit. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Const.h"
#import "OFDViewControl.h"

NS_ASSUME_NONNULL_BEGIN

@interface FXLicenceManager : NSObject

@property (nonatomic, copy) NSString *sn; // 授权码
@property (nonatomic, copy) NSString *checkIpAddress;// 激活ip 地址 默认为空 用福昕鲲鹏的服务器做激活
@property (nonatomic, readonly) NSString *deviceInfo;// 设备信息 唯一标识 + 包名


/*
 SN 原SN
 Modules 支持的模块
 Users 总的授权用户数
 LicenseDate 授权申请时间
 ExpireDate 过期截止时间
 Version 授权版本
 Keyver 授权文件版本
*/
@property (nonatomic, strong) NSDictionary *keyInfo;// 授权信息

/// 实体类
+ (instancetype)shareInstance;

/// 注册MRSDK方法 这个接口需要请求网络，服务器速度现在响应时间为8s 需要注意
/// - Parameters:
///   - sn: 申请的SN
///   - checkIpAddress: 验证服务器地址，默认为空，用福昕鲲鹏的服务器，如果是内网方式，需要部署内网证书颁发服务器，此处为内网校验服务器地址 https://ip:port
+ (enum FS_GSDK_LICENSE_ERRORCODE)registMRSDKWithSn:(NSString *)sn checkIpAddress:(NSString *)checkIpAddress;

/// 更新授权文件接口 调用之前必须得先调用注册接口
+ (enum FS_GSDK_LICENSE_ERRORCODE)updateLicence;

/// 加载底层库 调用之前必须得先调用注册接口
+ (void)loadLibraryState:(checkAuthorizedState)authorizedState;

/// 获取模块授权是否可用 内置UI 调用 不奔溃统一的弹窗提示
/// - Parameter moduleType: 模块类型
/// - Parameter authorizedState: 授权回调
+ (BOOL)isAuthorized:(FxLicenseModuleType)moduleType authorizedState:(checkAuthorizedState)authorizedState;

/// 获取模块授权是否可用
/// - Parameter moduleType: 模块类型
/// - Parameter isBreak:授权失败是否奔溃处理
/// - Parameter authorizedState: 授权回调
+ (BOOL)isAuthorized:(FxLicenseModuleType)moduleType
             isBreak:(BOOL)isBreak
     authorizedState:(checkAuthorizedState)authorizedState;

/// 根据FS_GSDK_LICENSE_ERRORCODE 获取对应错误信息
/// @param errorCode FS_GSDK_LICENSE_ERRORCODE
+ (NSString *)getLicenseCodeString:(enum FS_GSDK_LICENSE_ERRORCODE)errorCode;

/// 获取key文件字符串内容
+ (NSString *)getLicenceKey;

/// 获取指定SN 的licence 的绝对路径
+ (NSString *)getLicencePathWithSN:(NSString *)sn;
@end

NS_ASSUME_NONNULL_END
